package 集合.哈希.HashMap的查找问题;

import java.util.HashMap;

class Person2{
           private Integer id;
           Person2(Integer id){
               this.id=id;
           }
        }
public class HashMap_Test1 {
    /**
     * 使用String类型作为map的key
        * @param args
        * @return void
        * @author Changan
        * @date 2020/7/24 21:42
    */
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<String,String>();
        map.put("1","1");
        map.put("2","2");
        map.put("2","3");
        map.put("4","4");
        map.put(new String("ABCD"), "AAA");
        map.put(new String("ABCD"), "BBB");//会覆盖。原因：虽然两者的内存地址不同（使用‘==’比较为：false）,理论上的hashcode
                                                   // 就是内存地址转换过来的，可是String 中的hashcode被重写了！！
                                                   // 但是在map中比较的是hashcode(两者hashcode相同) 和equals（更相同）,
        System.out.println("比较String类型的Hashcode*******");
        System.out.println(new String("ABCD").hashCode() + " " + new String("ABCD").hashCode());

        map.forEach((key,value) ->{
            System.out.print(key+":");
            System.out.println(value);
        });

        //没有重写hashcode方法和equals方法
        System.out.println(new Person2(1)==new Person2(1));//false
        System.out.println(new Person2(1).equals(new Person2(1)));//false

    }
}
